import { getToken } from "@/utils/auth";
import { tansParams, toast } from "@/utils/common";
import errorCode from "@/utils/errorCode";

import config from "../../config";

let userStore = null;
let timeout = 10000;
const baseUrl = config.baseUrl;

const request = (config) => {
  // 是否需要设置 token
  const isToken = (config.headers || {}).isToken === false;
  config.headers = config.headers || {};
  if (getToken() && !isToken) {
    config.headers["Authorization"] = "Bearer " + getToken();
  }
  // get请求映射params参数
  if (config.params) {
    let url = config.url + "?" + tansParams(config.params);
    url = url.slice(0, -1);
    config.url = url;
  }
  return new Promise((resolve, reject) => {
    uni.showLoading({
      title: "加载中",
    });
    uni
      .request({
        method: config.method || "get",
        timeout: config.timeout || timeout,
        url: baseUrl + config.url,
        data: config.data,
        header: config.headers,
        dataType: "json",
      })
      .then((res) => {
        // let [error, res] = response
        // if (error) {
        //   toast('后端接口连接异常')
        //   reject('后端接口连接异常')
        //   return
        // }
        const code = res.data.code || 200;
        const msg = errorCode[code] || res.data.msg || errorCode["default"];

        // if (code === 401) {
        // showConfirm(
        //   "登录状态已过期，您可以继续留在该页面，或者重新登录?"
        // ).then((res) => {
        //   if (res.confirm) {
        // if (userStore === null) userStore = useUserStore();
        // userStore.LogOut().then((res) => {
        //   uni.reLaunch({
        //     url: "/pages/login/index",
        //   });
        // });
        //   }
        // });
        //   uni.showModal({
        //     title: "登录状态已过期",
        //     content: "继续留在该页面，或者重新登录?",
        //     confirmText: "去登录",
        //     success: function (res) {
        //       if (res.confirm) {
        //         uni.reLaunch({
        //           url: "/pages/recruit/login/index",
        //         });
        //       } else if (res.cancel) {
        //         console.log("用户点击取消");
        //       }
        //     },
        //   });
        //   reject("无效的会话，或者会话已过期，请重新登录。");
        // } else if (code === 500) {
        //   toast(msg);
        //   reject("500");
        // } else if (code !== 200) {
        //   toast(msg);
        //   reject(code);
        // } else if (code === 10001) {
        //   uni.showModal({
        //     title: "当前还未完善企业信息",
        //     content: "继续留在该页面，或者去完善企业信息?",
        //     confirmText: "去完善",
        //     success: function (res) {
        //       if (res.confirm) {
        //         uni.navigateTo({
        //           url: "/subPage/enterprise/mine/details/enterpriseData",
        //         });
        //       } else if (res.cancel) {
        //         console.log("用户点击取消");
        //       }
        //     },
        //   });
        //   reject(msg);
        // }
        // uni.hideLoading();
        // resolve(res.data);
        uni.hideLoading();

        switch (code) {
          case 401:
            // 储存登录状态
            uni.setStorageSync('loginStatus', 0)
            uni.showModal({
              title: "登录状态已过期",
              content: "继续留在该页面，或者重新登录?",
              confirmText: "去登录",
              success: function (res) {
                if (res.confirm) {
                  uni.reLaunch({
                    url: "/pages/recruit/login/index",
                  });
                } else if (res.cancel) {
                  console.log("用户点击取消");
                }
              },
            });
            reject("无效的会话，或者会话已过期，请重新登录。");
            break;
          case 500:
            setTimeout(() => {
              toast(msg);
            }, 0)
            reject(msg);
            break;
          // case !200:
          //   toast(msg);
          //   reject(code);
          //   break;
          case 10001:
            uni.showModal({
              title: "当前还未完善企业信息",
              content: "继续留在该页面，或者去完善企业信息?",
              confirmText: "去完善",
              success: function (res) {
                if (res.confirm) {
                  uni.navigateTo({
                    url: "/subPage/enterprise/mine/details/enterpriseData",
                  });
                } else if (res.cancel) {
                  console.log("用户点击取消");
                }
              },
            });
            reject(code);
            break;
            case 10011:
              setTimeout(() => {
                toast(msg);
              }, 0)
              reject(msg);
              break;
            case 10012:
              setTimeout(() => {
                toast(msg);
              }, 0)
              reject(msg);
              break;
        }
        resolve(res.data);
      })

      .catch((error) => {
        let { message } = error;
        console.log(error, "error");
        // if (message === "Network Error") {
        //   message = "后端接口连接异常";
        // } else if (message.includes("timeout")) {
        //   message = "系统接口请求超时";
        // } else if (message.includes("Request failed with status code")) {
        //   message = "系统接口" + message.substr(message.length - 3) + "异常";
        // }
        toast(message);
        uni.hideLoading();
        reject(error);
      });
  });
};

export default request;
